<template>
  <div class="reportBox">
    <j-dialog
    :title="updateRow.name"
    :visible.sync="showFormula"
    is-mask
    style="width: 800px"
    >
      <set-formula @close="showFormula = false" v-if="showFormula" :obj="updateRow" :subject-list="subjectList"></set-formula>
    </j-dialog>
    <div class="title flex a-item j-content">利润表</div>
    <br />
    <div style="width: 100%" class="flex flex-row">
      <div class="fl1">编制单位:<input placeholder="请输入编制单位" v-model="profitStatementTemplateData.companyName"></input></div>
      <div class="fl1">年 月</div>
      <div class="fl1">单位:元</div>
    </div>
    <div class="content">
      <div class="flex flex-row">
        <div class="td fl2 flex a-item j-content">项目</div>
        <div class="td fl1 flex a-item j-content">行次</div>
        <div class="td fl1 flex a-item j-content">本期数</div>
        <div class="td fl1 flex a-item j-content">本年累计数</div>
      </div>

      <profit-statement-row @setFormula="setFormula" v-for="item in profitStatementTemplateData.rowDataList" :row-data.sync="item" :no="1"></profit-statement-row>
    </div>

    <div style="width: 100%;margin-top: 50px" class="flex flex-reverse">
      <div  @click="save" class="button button--bird">
        <div class="button__wrapper">
          <span class="button__text">保存</span>
        </div>

        <div class="birdBox">
          <div class="bird wakeup">
            <div class="bird__face"></div>
          </div>
          <div class="bird wakeup">
            <div class="bird__face"></div>
          </div>
          <div class="bird">
            <div class="bird__face"></div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import ProfitStatementRow from './componet/profitStatementRow'
import JDialog from '../../../../../components/jDialog/jDialog'
import { childBasSubjectList } from '@/api/erp/basSubject'
import SetFormula from './componet/setFormula'
import { webProperties } from '../../../../../api/data'
import { basSubjectIncurredAmount } from '@/api/erp/basSubject'
export default {
  name: 'profitStatementTemplate',
  data(){
    return{
      profitStatementTemplateData:{
        companyName:null,
        rowDataList:[
          {
            name:'营业收入',
            children:[]
          },
          {
            name:'营业支出',
            children:[]
          },
          {
            name:'营业利润',
            children:[]
          },
        ],
      },
      updateRow:{},
      showFormula: false,
      subjectList: []
    }
  },
  created() {
    basSubjectIncurredAmount()
    webProperties({key: 'profitStatementTemplate'}).then(res=>{this.profitStatementTemplateData = JSON.parse(res.data.value)})
    childBasSubjectList({size:999}).then(res=>{
      this.subjectList = res.content
      this.subjectList.push({name:'主营业务收入'})
      this.subjectList.push({name:'盘点报溢收入'})
      this.subjectList.push({name:'主营业务成本'})
    })
  },
  components: { SetFormula, JDialog, ProfitStatementRow },
  methods:{
    setFormula(e){
      this.updateRow = e
      this.showFormula = true
    },
    setIndex(list,index){
      list.forEach(item=>{
        item.rowIndex = index
        index++
      })
      return index
    },
    async save(){
      let i = 1
      this.profitStatementTemplateData.rowDataList.forEach(item=>{
        item.rowIndex = i
        i++
        if (item.children.length)
        i = this.setIndex(item.children,i)
      })
      const data = {
        key: 'profitStatementTemplate',
        value: JSON.stringify(this.profitStatementTemplateData)
      }
      const res = await webProperties(data)
      this.profitStatementTemplateData = JSON.parse(res.data.value)
      this.$message.success('保存成功')
    }
  }
}
</script>

<style lang="scss" scoped>
.reportBox{
  margin: 100px 20% 0 20%;
  width: 60%;
  min-height: 500px;
  min-width: 500px;
  .title{
    color: #ffffff;
    background-color: #1F4E78;
    height: 60px;
    font-size: 40px;
  }
  .content{
    .title{

    }
  }
}
.td{
  border: 1px solid #000000;
  height: 30px;
}
input{
  border: none;
}
.button--bird{
  --main_color: #f4cf47;
  --sub_color1: #f4e19c;
  --sub_color2: #ff8108;
  --base_color: #000;
  --border_radius1: 60px 60px 40px 40px / 48px 48px 30px 30px;
  --border_radius2: 70px 70px 40px 40px / 48px 48px 30px 30px;
  --border_radius3: 40px 40px 40px 40px / 48px 48px 30px 30px;
}
.button {
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  box-sizing: border-box;
  width: 280px;
  height: 80px;

  text-decoration: none;
  border: solid 3px #000;
  border-radius: 40px;
  background: var(--main_color);
  position: relative;
  margin-top: 100px;

}

.button__wrapper{
  display: flex;
  justify-content: center;
  align-items: center;

  width: 100%;
  height: 100%;

  border-radius: 40px;

  overflow: hidden;
  position: relative;

}
.button__text{
  position: relative;
  font-size: 32px;
  letter-spacing: 4px;
  color: var(--base_color);
  transition: all .3s ease;
}

.button::before{
  content: '';
  position: absolute;

  right: 20px;
  margin: auto 0;
  width: 24px;
  height: 24px;
  background: var(--base_color);
  clip-path: path('M24,12.02c0-1.09-.75-1.71-.81-1.77L11.17,.45c-.91-.74-2.21-.56-2.91,.42-.69,.97-.52,2.37,.39,3.11l7.12,5.81-13.7-.02h0C.93,9.77,0,10.76,0,11.99c0,1.23,.93,2.22,2.07,2.22l13.7,.02-7.13,5.78c-.91,.74-1.09,2.13-.4,3.11,.41,.58,1.03,.88,1.65,.88,.44,0,.88-.15,1.25-.45l12.04-9.76c.07-.06,.82-.67,.82-1.77Z');
  transition: all ease .2s;
}
.button--bird .button__wrapper::before,
.button--bird .button__wrapper::after{
  content: '';
  position: absolute;
  bottom: 0;
  width: 130px;
  height: 38px;
  background: var(--sub_color1);
  transition: all .5s ease;
  clip-path: path('M13.77,37.35L.25,16.6c-.87-1.33,.69-2.91,2-2.02l12.67,8.59c.81,.55,1.91,.14,2.18-.81l2.62-9.33c.39-1.4,2.34-1.42,2.76-.02l3.6,11.99c.33,1.11,1.74,1.4,2.47,.52L49.38,.52c.87-1.04,2.53-.42,2.53,.95V23.7c0,1.13,1.2,1.83,2.16,1.26l12.75-7.51c.85-.5,1.94,0,2.13,.98l1.5,7.6c.2,1.03,1.37,1.51,2.22,.92l17.74-12.3c1.09-.75,2.52,.25,2.21,1.55l-2.44,10.2c-.26,1.09,.74,2.06,1.8,1.75l30.8-9.04c1.37-.4,2.42,1.26,1.49,2.36l-9.07,10.66c-.83,.98-.1,2.49,1.17,2.42l12.12-.68c1.6-.09,2.12,2.15,.65,2.8l-2.73,1.21c-.18,.08-.38,.12-.58,.12H14.97c-.48,0-.93-.25-1.2-.65Z');
}
.button--bird .button__wrapper::before{
  left: 0;
}
.button--bird .button__wrapper::after{
  right: 0;
  transform: rotateY(180deg);
}

.button:hover .button__wrapper::before{
  transform: translateX(-12px);
}
.button:hover .button__wrapper::after{
  transform: rotateY(180deg) translateX(-12px);
}
.button:hover .button__text{
  letter-spacing: 6px;
}
.button:hover::before{
  right: 14px;
}

.birdBox{
  position: absolute;
  top: -54px;
  display: flex;
  justify-content:space-between;
  align-items: flex-end;
  width: 180px;
  height: 56px;
}

.bird{
  position: relative;
  width: 56px;
  height: 36px;
  box-sizing: border-box;
  border: solid 3px #000;
  background: var(--main_color);
  border-radius: var(--border_radius1);
  animation: sleep 1s ease infinite alternate;
  display: flex;
  justify-content: center;
}
.bird__face{
  position: absolute;
  top: 15px;
  width: 12px;
  height: 6px;
  background: var(--sub_color2);
  border-radius: 50% 50% 50% 50% / 78% 78% 22% 22%;
  transition: .2s;
}
.bird__face::before,
.bird__face::after{
  content: '';
  position: absolute;
  top: -4px;
  width: 8px;
  height: 2px;
  border-radius: 4px;
  background: #000;
}
.bird__face::before{
  left: -5px;
}
.bird__face::after{
  right: -5px;
}
.bird::before{
  content: '';
  position: absolute;
  top: -12px;
  left: 22px;
  width: 12px;
  height: 12px;
  background: #000;
  clip-path: path('M10.23,3.32c-3.54,.63-5.72,2.51-7.02,4.23-.33-1.58-.34-3.54,.93-5.12,.52-.65,.41-1.59-.24-2.11C3.24-.19,2.29-.08,1.77,.57c-3.82,4.77-.31,11.11-.13,11.42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0-.01-.02,2.49,.04,2.52,0,.1-.14,1.54-4.82,6.59-5.71,.82-.14,1.37-.92,1.22-1.74s-.94-1.36-1.75-1.21Z');
}
.button:hover .wakeup{
  animation: wakeup .2s ease;
  animation-fill-mode: forwards;
}
.button:hover .wakeup .bird__face{
  top: 20px;
}
.button:hover .wakeup .bird__face::before,
.button:hover .wakeup .bird__face::after{
  animation: eye 5s linear infinite;
}

.button:hover .wakeup:nth-child(2) .bird__face::before,
.button:hover .wakeup:nth-child(2) .bird__face::after{
  animation: eye_2 5s linear infinite;
}

@keyframes wakeup{
  0%  {
    height: 32px;
    border-radius: var(--border_radius2);
  }
  100%{
    height: 56px;
    border-radius: var(--border_radius3);
  }
}

@keyframes eye {
  0%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  30%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  32%{
    top: -4px;
    width: 8px;
    height: 2px;
  }
  34%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  70%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  72%{
    top: -4px;
    width: 8px;
    height: 2px;
  }
  74%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  76%{
    top: -4px;
    width: 8px;
    height: 2px;
  }
  78%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  100%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
}

@keyframes eye_2 {
  0%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  10%{
    transform: translateX(0);
  }
  12%{
    transform: translateX(3px);
  }
  20%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  22%{
    top: -4px;
    width: 8px;
    height: 2px;
  }
  24%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  25%{
    transform: translateX(3px);
  }
  27%{
    transform: translateX(0);
  }
  74%{
    top: -6px;
    width: 6px;
    height: 6px;
    transform: translateX(0);
  }
  76%{
    top: -4px;
    width: 8px;
    height: 2px;
    transform: translateX(3px);
  }
  78%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  80%{
    top: -4px;
    width: 8px;
    height: 2px;
  }
  82%{
    top: -6px;
    width: 6px;
    height: 6px;
  }
  85%{
    transform: translateX(3px);
  }
  87%{
    transform: translateX(0);
  }
  100%{
    top: -6px;
    width: 6px;
    height: 6px;
    transform: translateX(0);
  }

}
@keyframes sleep{
  0%  {
    height: 36px;
    border-radius: var(--border_radius1);
  }
  100%{
    height: 32px;
    border-radius: var(--border_radius2);
  }
}
</style>
